From: kfraser@localhost.localdomain Date: Thu, 6 Sep 2007 10:31:02 +0000 (+0100) Subject: hvm: Remove hvm-specific NMI flag and use generic flag instead. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14987^2~14 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/%22bookmarks:/?a=commitdiff_plain;h=a65041a5327954ee75109bd112f062f8ba273bc1;p=xen.git hvm: Remove hvm-specific NMI flag and use generic flag instead. Signed-off-by: Keir Fraser --- diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 3245a42bca..24b579d466 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -508,12 +508,8 @@ long arch_do_domctl( { case XEN_DOMCTL_SENDTRIGGER_NMI: { - ret = -ENOSYS; - if ( !is_hvm_domain(d) ) - break; - ret = 0; - if ( !test_and_set_bool(v->arch.hvm_vcpu.nmi_pending) ) + if ( !test_and_set_bool(v->nmi_pending) ) vcpu_kick(v); } break; diff --git a/xen/arch/x86/hvm/irq.c b/xen/arch/x86/hvm/irq.c index 9212e93fe1..b41295a273 100644 --- a/xen/arch/x86/hvm/irq.c +++ b/xen/arch/x86/hvm/irq.c @@ -289,7 +289,7 @@ enum hvm_intack hvm_vcpu_has_pending_irq(struct vcpu *v) { struct hvm_domain *plat = &v->domain->arch.hvm_domain; - if ( unlikely(v->arch.hvm_vcpu.nmi_pending) ) + if ( unlikely(v->nmi_pending) ) return hvm_intack_nmi; if ( vlapic_has_interrupt(v) != -1 ) @@ -306,7 +306,7 @@ int hvm_vcpu_ack_pending_irq(struct vcpu *v, enum hvm_intack type, int *vector) switch ( type ) { case hvm_intack_nmi: - return test_and_clear_bool(v->arch.hvm_vcpu.nmi_pending); + return test_and_clear_bool(v->nmi_pending); case hvm_intack_lapic: return ((*vector = cpu_get_apic_interrupt(v)) != -1); case hvm_intack_pic: diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index e73ad68881..6f708b5a0c 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -391,7 +391,7 @@ static void vioapic_deliver(struct hvm_hw_vioapic *vioapic, int irq) continue; deliver_bitmask &= ~(1 << bit); if ( ((v = vioapic_domain(vioapic)->vcpu[bit]) != NULL) && - !test_and_set_bool(v->arch.hvm_vcpu.nmi_pending) ) + !test_and_set_bool(v->nmi_pending) ) vcpu_kick(v); } break; diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index 712c7c7523..5d2fc73a36 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -294,7 +294,7 @@ static int vlapic_accept_irq(struct vcpu *v, int delivery_mode, break; case APIC_DM_NMI: - if ( !test_and_set_bool(v->arch.hvm_vcpu.nmi_pending) ) + if ( !test_and_set_bool(v->nmi_pending) ) vcpu_kick(v); break; diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 459077a822..9d9eb53725 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -1890,7 +1890,7 @@ static void nmi_dom0_report(unsigned int reason_idx) set_bit(reason_idx, nmi_reason(d)); - if ( !xchg(&v->nmi_pending, 1) ) + if ( !test_and_set_bool(v->nmi_pending) ) raise_softirq(NMI_SOFTIRQ); /* not safe to wake up a vcpu here */ } diff --git a/xen/include/asm-x86/hvm/vcpu.h b/xen/include/asm-x86/hvm/vcpu.h index c4ea85c189..d790eb2037 100644 --- a/xen/include/asm-x86/hvm/vcpu.h +++ b/xen/include/asm-x86/hvm/vcpu.h @@ -46,9 +46,6 @@ struct hvm_vcpu { s64 cache_tsc_offset; u64 guest_time; - /* Is an NMI pending for delivery to this VCPU core? */ - bool_t nmi_pending; /* NB. integrate flag with save/restore */ - /* Lock and list for virtual platform timers. */ spinlock_t tm_lock; struct list_head tm_list;